Проанализируйте эффект от проводимых акций (по выручке) в рассматриваемой игре. Сделайте это с использованием метода «срезания горба». Для этого необходимо взять данные по выручке за период до акции. Затем примерно определяем, сколько она была бы во время акции, если бы её не было (используйте медиану). Далее фиксируются реальные данные во время акции и разница оценивается как прибыль от акции.
Акции в игре привязаны ко времени. Подумайте, каким образом на основании имеющихся данных можно оценить время, когда проводилась каждая конкретная акция.
#рассчитывалось среднее время достижения уровня после события установки игры
rev=pd.read_sql(f'''
SELECT event_date,
sum(revenue) as rev
FROM data_viz_1068.project_dataset
GROUP BY 1
''', con=engine)
rev['event_date']=pd.to_datetime(rev['event_date']).dt.strftime('%Y-%m-%d')
revenue=[]
fig = px.area(rev, x = 'event_date', y = 'rev',
title = 'Изменения выручки октябрь 2020- май 2021 годов')
fig.update_xaxes(rangeslider_visible=True)
fig.show()
Начнем с акции, проводимой в период 23-27 ноября. Первый всплеск в начале ноября специально не буду рассматривать, так как мало данных до этого периода.
#выручка до акции
rev_before=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date <= '2020-11-23'
GROUP BY 1
''', con=engine)
rev_before['rev'].median()
9160.579999999998
#выручка во время акции
rev_after=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date between '2020-11-23' and '2020-11-27'
GROUP BY 1
''', con=engine)
rev_after['rev'].median()
69665.53000000019
#прибыль от акции
revenue.append(rev_after['rev'].median()-rev_before['rev'].median())
rev_after['rev'].median()-rev_before['rev'].median()
60504.950000000186
с 7 по 11 декабря
#выручка до акции
rev_before=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date <= '2020-12-7'
GROUP BY 1
''', con=engine)
rev_before['rev'].median()
12672.0
#выручка во время акции
rev_after=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date between '2020-12-7' and '2020-12-11'
GROUP BY 1
''', con=engine)
rev_after['rev'].median()
24972.220000000045
#прибыль от акции
revenue.append(rev_after['rev'].median()-rev_before['rev'].median())
rev_after['rev'].median()-rev_before['rev'].median()
12300.220000000045
c 13 по 16 декабря
#выручка до акции
rev_before=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date <= '2020-12-13'
GROUP BY 1
''', con=engine)
rev_before['rev'].median()
13205.68
#выручка во время акции
rev_after=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date between '2020-12-13' and '2020-12-16'
GROUP BY 1
''', con=engine)
rev_after['rev'].median()
26279.969999999936
#прибыль от акции
revenue.append(rev_after['rev'].median()-rev_before['rev'].median())
rev_after['rev'].median()-rev_before['rev'].median()
13074.289999999935
с 28 по 31 января
#выручка до акции
rev_before=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date <= '2021-01-28'
GROUP BY 1
''', con=engine)
rev_before['rev'].median()
10345.0
#выручка во время акции
rev_after=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date between '2021-01-28' and '2021-01-31'
GROUP BY 1
''', con=engine)
rev_after['rev'].median()
13126.686146000004
#прибыль от акции
revenue.append(rev_after['rev'].median()-rev_before['rev'].median())
rev_after['rev'].median()-rev_before['rev'].median()
2781.6861460000036
с 2 по 5 февраля
#выручка до акции
rev_before=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date <= '2021-02-2'
GROUP BY 1
''', con=engine)
rev_before['rev'].median()
10389.0
#выручка во время акции
rev_after=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date between '2021-02-2' and '2021-02-5'
GROUP BY 1
''', con=engine)
rev_after['rev'].median()
37964.171931000004
#прибыль от акции
revenue.append(rev_after['rev'].median()-rev_before['rev'].median())
rev_after['rev'].median()-rev_before['rev'].median()
27575.171931000004
с 10 по 17 февраля
#выручка до акции
rev_before=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date <= '2021-02-10'
GROUP BY 1
''', con=engine)
rev_before['rev'].median()
10861.825
#выручка во время акции
rev_after=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date between '2021-02-10' and '2021-02-17'
GROUP BY 1
''', con=engine)
rev_after['rev'].median()
48743.52204099999
#прибыль от акции
revenue.append(rev_after['rev'].median()-rev_before['rev'].median())
rev_after['rev'].median()-rev_before['rev'].median()
37881.69704099999
с 17 по 24 февраля
#выручка до акции
rev_before=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date <= '2021-02-17'
GROUP BY 1
''', con=engine)
rev_before['rev'].median()
11687.019999999993
#выручка во время акции
rev_after=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date between '2021-02-17' and '2021-02-24'
GROUP BY 1
''', con=engine)
rev_after['rev'].median()
22657.319097500014
#прибыль от акции
revenue.append(rev_after['rev'].median()-rev_before['rev'].median())
rev_after['rev'].median()-rev_before['rev'].median()
10970.299097500021
с 28 по 31 марта
#выручка до акции
rev_before=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date <= '2021-03-28'
GROUP BY 1
''', con=engine)
rev_before['rev'].median()
11109.236675
#выручка во время акции
rev_after=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date between '2021-03-28' and '2021-03-31'
GROUP BY 1
''', con=engine)
rev_after['rev'].median()
20084.366165
#прибыль от акции
revenue.append(rev_after['rev'].median()-rev_before['rev'].median())
rev_after['rev'].median()-rev_before['rev'].median()
8975.12949
с 28 апреля по 1 мая
#выручка до акции
rev_before=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date <= '2021-04-28'
GROUP BY 1
''', con=engine)
rev_before['rev'].median()
9037.84
#выручка во время акции
rev_after=pd.read_sql(f'''
SELECT event_date, sum(revenue) as rev
FROM data_viz_1068.project_dataset
WHERE event_date between '2021-04-28' and '2021-05-1'
GROUP BY 1
''', con=engine)
rev_after['rev'].median()
1971.7269
#прибыль от акции
revenue.append(rev_after['rev'].median()-rev_before['rev'].median())
rev_after['rev'].median()-rev_before['rev'].median()
-7066.1131000000005
df=pd.DataFrame(revenue)
Вывод:
По длительности акций видно, что в среднем они длятся около 4-7 дней. В проводимости акций нет каких-либо закономерностей, но чаще всего это либо начало, либо конец месяца. Привязка к праздникам также не особо прослеживается (например, НГ), но может быть акция проводилась сильно заранее. Для более детального изучения величины дохода необходимы данные по характерам акций, их выгоде для пользователей, ориентированности на аудиторию и т.д. На текущий момент возможно сделать только сравнительный анализ по выручке.
Наиболее выгодной получилась акция 1 (но возможны погрешности расчета, так как это начало df), чуть менее 5 и 6. Остальные акции также приносят прибыль, но в несколько раз меньше, за исключением 7. Длительность акции не влияет на падение выручки в данном случае.